#coding:utf-8
import pandas as pd
import csv
import re
import numpy as np
from datetime import datetime
#读取文件

dou1=pd.read_excel(r'G:\工作\每日\抖音1.xlsx',dtype={'商品ID':str,'达人昵称':str,'选购商品':str})
dou1['平台']='抖音1'
dou2=pd.read_excel(r'G:\工作\每日\抖音2.xlsx',dtype={'商品ID':str,'达人昵称':str,'选购商品':str})
dou2['平台']='抖音2'
dou3=pd.read_excel(r'G:\工作\每日\抖音3.xlsx',dtype={'商品ID':str,'达人昵称':str,'选购商品':str}) 
dou3['平台']='抖音3'
dou4=pd.read_excel(r'G:\工作\每日\抖音4.xlsx',dtype={'商品ID':str,'达人昵称':str,'选购商品':str})
dou4['平台']='抖音4'
dou=pd.concat([dou1,dou2,dou3,dou4])

jd1=pd.read_excel(r'G:\工作\每日\JD.xlsx',dtype={'商品ID':str})
jd2=pd.read_excel(r'G:\工作\每日\JD1.xlsx',dtype={'商品ID':str})
jd=pd.concat([jd1,jd2])
jd_qc=jd.drop_duplicates(subset=['订单号']) #订单编号去重，统计销售额

pdd1=pd.read_excel(r'G:\工作\每日\PDD1.xlsx',dtype={'商品id':str})
pdd2=pd.read_excel(r'G:\工作\每日\PDD2.xlsx',dtype={'商品id':str})
pdd3=pd.read_excel(r'G:\工作\每日\PDD3.xlsx',dtype={'商品id':str})
pdd4=pd.read_excel(r'G:\工作\每日\PDD4.xlsx',dtype={'商品id':str})
pdd6=pd.read_excel(r'G:\工作\每日\PDD6.xlsx',dtype={'商品id':str})
pdd5=pd.read_excel(r'G:\工作\每日\PDD5.xlsx',dtype={'商品id':str})
#pdd1=pd.read_csv(r'G:\工作\每日\PDD1.csv')
#pdd2=pd.read_csv(r'G:\工作\每日\PDD2.csv')
ks1=pd.read_excel(r'G:\工作\每日\快手1.xlsx',dtype={'商品ID':str})
ks1['平台']='快手1'
ks2=pd.read_excel(r'G:\工作\每日\快手2.xlsx',dtype={'商品ID':str})
ks2['平台']='快手2'
ks3=pd.read_excel(r'G:\工作\每日\快手3.xlsx',dtype={'商品ID':str})
ks3['平台']='快手3'
ks=pd.concat([ks1,ks2,ks3])
ks['渠道']='快手'
xhs=pd.read_excel(r'G:\工作\每日\小红书.xlsx',dtype={'规格ID':str})
sph=pd.read_excel(r'G:\工作\每日\视频号.xlsx',dtype={'商品spu':str})
sph_qc=sph.drop_duplicates(subset=['订单号'])
tm=pd.read_excel(r'G:\工作\每日\天猫.xlsx',dtype={'商品id':str})
tcc=pd.read_excel(r'G:\工作\每日\淘宝买菜.xlsx')
tgc=pd.read_excel(r'G:\工作\每日\淘工厂.xlsx')
tgc2=pd.read_excel(r'G:\工作\每日\淘工厂2.xlsx')
#区分抖音渠道

def  f(x,y,z,w,a,p): #x:选购商品 y:达人昵称 z:流量来源 w:流量类型 a:流量体裁
    if 'zs2' in x or ('zz' in x):
        return '代播'
    elif 'zs' in x:
        return '代播'
    elif y=='宛禾食品旗舰店直播间' or y=='宛禾牛宅':
        return '代播'
    elif y=='宛禾速食旗舰店自播间' or  y=='宛禾食品旗舰店自播间':
        return '代播'
    elif y=='宛禾米线官方旗舰店' or ('z1' in x)  or ('Z1' in x):
        return '自播间1.0'
    elif y=='宛禾米线速食官方旗舰店'  or y=='宛禾米线' or y=='宛禾速食官方旗舰店' or y=='宛禾食品'  or y=='宛禾速食直播间'or ('z3' in x)  or ('Z3' in x):
        return '自播间3.0'
    #elif y=='宛禾食品甄选号' or ('wzm' in x) :
        #return '窝子面直播间'
    elif y=='宛禾食品旗舰店' or ('z5' in x)  or ('Z5' in x):
        return '自播间5.0'
    elif y=='宛禾速食旗舰店' or y=='宛禾食品旗舰店甄选号' or ('z6' in x)  or ('Z6' in x):
        return '自播间6.0'
    elif y=='宛禾官方旗舰店'or ('z8' in x)  or ('Z8' in x):
        return '自播间8.0'
    elif y=='宛禾米线速食旗舰店' or ('lsf' in x) :
        return '螺蛳土豆粉直播间'
    elif p=='抖音1' and ('dsp' in x) :
        return '自播间1.0'
    elif p=='抖音2' and ('dsp' in x) :
        return '自播间5.0'
    elif p=='抖音3' and ('dsp' in x) :
        return '自播间8.0'
    elif p=='抖音4' and ('dsp' in x) :
        return '螺蛳土豆粉直播间'
    elif pd.notnull(y):
        return '达人分发'
    elif z=='精选联盟':
        return '达人分发'
    elif w=='广告' and a=='商品卡':
        return '超级商品卡'
    else:
        return '自然单'
dou['渠道']=list(map(f,list(dou['选购商品']),list(dou['达人昵称']),list(dou['流量来源']),list(dou['流量类型']),list(dou['流量体裁']),list(dou['平台'])))
#dou2['渠道']=list(map(f,list(dou2['选购商品']),list(dou2['达人昵称']),list(dou2['流量来源']),list(dou2['流量类型']),list(dou2['流量体裁'])))
#dou3['渠道']=list(map(f,list(dou3['选购商品']),list(dou3['达人昵称']),list(dou3['流量来源']),list(dou3['流量类型']),list(dou3['流量体裁'])))

dou_date=dou.loc[:,['商品ID','商家编码','商品数量','订单应付金额','订单状态','售后状态','订单应付金额','订单提交时间','渠道','平台']]

dou_date.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']


jd_date=jd.loc[:,['商品ID','商家SKUID','订购数量','结算金额','订单状态','订单状态','结算金额','下单时间']] 
jd_date['渠道']='京东旗舰店'
jd_date['平台']='京东旗舰店'
jd_date.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']

jd_xse=jd_qc.loc[:,['商品ID','商家SKUID','订购数量','结算金额','订单状态','订单状态','结算金额','下单时间']]
jd_xse['渠道']='京东旗舰店'
jd_xse['平台']='京东旗舰店'
jd_xse.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']

pdd1_date=pdd1.loc[:,['商品id','商家编码-规格维度','商品数量(件)','商家实收金额(元)','订单状态','售后状态','商家实收金额(元)','支付时间']]
pdd1_date['渠道']='拼多多'
pdd1_date['平台']='拼多多1店'
pdd1_date.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']
pdd2_date=pdd2.loc[:,['商品id','商家编码-规格维度','商品数量(件)','商家实收金额(元)','订单状态','售后状态','商家实收金额(元)','支付时间']]
pdd2_date['渠道']='拼多多'
pdd2_date['平台']='拼多多2店'
pdd2_date.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']

pdd3_date=pdd3.loc[:,['商品id','商家编码-规格维度','商品数量(件)','商家实收金额(元)','订单状态','售后状态','商家实收金额(元)','支付时间']]
pdd3_date['渠道']='拼多多'
pdd3_date['平台']='拼多多3店'
pdd3_date.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']

pdd4_date=pdd4.loc[:,['商品id','商家编码-规格维度','商品数量(件)','商家实收金额(元)','订单状态','售后状态','商家实收金额(元)','支付时间']]
pdd4_date['渠道']='拼多多'
pdd4_date['平台']='拼多多4店'
pdd4_date.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']

pdd6_date=pdd6.loc[:,['商品id','商家编码-规格维度','商品数量(件)','商家实收金额(元)','订单状态','售后状态','商家实收金额(元)','支付时间']]
pdd6_date['渠道']='拼多多'
pdd6_date['平台']='拼多多6店'
pdd6_date.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']

pdd5_date=pdd5.loc[:,['商品id','商家编码-规格维度','商品数量(件)','商家实收金额(元)','订单状态','售后状态','商家实收金额(元)','支付时间']]
pdd5_date['渠道']='拼多多'
pdd5_date['平台']='拼多多5店'
pdd5_date.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']

ks_date=ks.loc[:,['商品ID','SKU编码','成交数量','实付款','订单状态','售后状态','实付款','订单创建时间','渠道','平台']]  #2月27日 退货退款列改为售后状态
#ks_date['渠道']='快手'
#ks1_date['平台']='快手1'
ks_date.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']
ks_date['订单应付金额']=ks_date['订单应付金额'].map(lambda x: float(str(x).replace('¥',''))) ##去除￥符号
ks_date['退款金额']=ks_date['退款金额'].map(lambda x: float(str(x).replace('¥',''))) ##去除￥符号

#ks2_date=ks2.loc[:,['商品ID','SKU编码','成交数量','实付款','订单状态','售后状态','实付款','订单创建时间']]  #2月27日 退货退款列改为售后状态
#ks2_date['渠道']='快手'
#ks2_date['平台']='快手2'
#ks2_date.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']
#ks2_date['订单应付金额']=ks2_date['订单应付金额'].map(lambda x: float(str(x).replace('¥',''))) ##去除￥符号
#ks2_date['退款金额']=ks2_date['退款金额'].map(lambda x: float(str(x).replace('¥',''))) ##去除￥符号

xhs_date=xhs.loc[:,['规格ID','商家编码','SKU件数','商家应收金额(元)（支付金额）','订单状态','售后状态','商家应收金额(元)（支付金额）','订单创建时间']]
xhs_date['渠道']='小红书'
xhs_date['平台']='小红书'
xhs_date.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']

sph_date=sph.loc[:,['商品编码(平台)','SKU编码(自定义)','商品数量','订单实际支付金额','订单状态','商品售后','商品已退款金额','订单下单时间']]
sph_date['渠道']='视频号'
sph_date['平台']='视频号'
sph_date.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']

sph_xse=sph_qc.loc[:,['商品编码(平台)','SKU编码(自定义)','商品数量','订单实际支付金额','订单状态','商品售后','商品已退款金额','订单下单时间']]
sph_xse['渠道']='视频号'
sph_xse['平台']='视频号'
sph_xse.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']

#tm_date=tm.loc[:,['商品id','商家编码','购买数量','买家实际支付金额','订单状态','退款状态','退款金额','订单创建时间']]
tm_date=tm.loc[:,['商品ID','商家编码','购买数量','买家实付金额','订单状态','退款状态','退款金额','订单创建时间']]
tm_date['渠道']='天猫旗舰店'
tm_date['平台']='天猫旗舰店'
tm_date['退款金额']=tm_date['退款金额'].map(lambda x: float(str(x).replace('无退款申请','0'))) #替换无退款申请
tm_date.columns=['SKU','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']

tcc_date=tcc.loc[:,['商家编码','宝贝数量','子单实际支付金额','订单状态','订单状态','退款金额','订单创建时间']]
tcc_date['渠道']='淘宝买菜'
tcc_date['平台']='淘宝买菜'
tcc_date.columns=['商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']

tgc_date=tgc.loc[:,['商家编码','宝贝数量','子单实际支付金额','订单状态','订单状态','退款金额','订单创建时间']]
tgc_date['渠道']='淘工厂'
tgc_date['平台']='淘工厂'
tgc_date.columns=['商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']

tgc2_date=tgc2.loc[:,['商家编码','宝贝数量','子单实际支付金额','订单状态','订单状态','退款金额','订单创建时间']]
tgc2_date['渠道']='淘宝买菜'
tgc2_date['平台']='淘宝买菜'
tgc2_date.columns=['商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','日期','渠道','平台']
#合并数据


#销售额
date_concat=pd.concat([dou_date,jd_xse,pdd1_date,pdd2_date,pdd3_date,pdd4_date,pdd6_date,pdd5_date,ks_date,xhs_date,sph_xse,tm_date,tcc_date,tgc_date,tgc2_date])  #销售额，
#单量
date_concat_1=pd.concat([dou_date,jd_date,pdd1_date,pdd2_date,pdd3_date,pdd4_date,pdd6_date,pdd5_date,ks_date,xhs_date,sph_date,tm_date,tcc_date,tgc_date,tgc2_date])  #订单件数 单量

#['商家编码']去空格
date_concat['商家编码']=date_concat['商家编码'].str.strip()
date_concat_1['商家编码']=date_concat_1['商家编码'].str.strip()
date_concat['SKU']=date_concat['SKU'].str.strip()
date_concat_1['SKU']=date_concat_1['SKU'].str.strip()
#去掉 '商家编码' 为空的
date_concat.dropna(subset=['商家编码'], inplace=True)
date_concat_1.dropna(subset=['商家编码'], inplace=True)
#date_concat.to_excel(r'G:\结果\结果_全.xlsx')
date_concat_1=date_concat_1.applymap(lambda x : str(x).strip())

# 打开数据库连接
date_concat_1['日期']=date_concat_1['日期'].replace("",'1998-01-01 00:00:00')

date_concat_1['日期']=pd.to_datetime(date_concat_1['日期'])
date_concat_1['日期']=date_concat_1['日期'].map(lambda x : datetime.date(x))
date_concat_1['商品数量']=date_concat_1['商品数量'].map(lambda x: int(float(x)))
date_concat_1['订单应付金额']=date_concat_1['订单应付金额'].map(lambda x: float(x))
date_concat_1['退款金额']=date_concat_1['退款金额'].map(lambda x: float(x))

date_concat=date_concat.applymap(lambda x : str(x).strip())


date_concat['日期']=date_concat['日期'].replace("",'1998-01-01 00:00:00')

date_concat['日期']=pd.to_datetime(date_concat['日期'])
date_concat['日期']=date_concat['日期'].map(lambda x : datetime.date(x))
date_concat['商品数量']=date_concat['商品数量'].map(lambda x: int(float(x)))
date_concat['订单应付金额']=date_concat['订单应付金额'].map(lambda x: float(x))
date_concat['退款金额']=date_concat['退款金额'].map(lambda x: float(x))

#筛选发货订单，不去掉金额<=0.01,和赠品  单量，去掉退货成功的
date_concat_dl=date_concat_1[(date_concat_1['订单状态'] == '部分发货')|(date_concat_1['订单状态'] =='待发货')|(date_concat_1['订单状态'] =='待配货')
                             |(date_concat_1['订单状态'] =='等待确认收货')|(date_concat_1['订单状态'] =='交易成功')
                             |(date_concat_1['订单状态'] =='卖家已发货，等待买家确认')|(date_concat_1['订单状态'] =='已发货')
                             |(date_concat_1['订单状态'] =='已发货，待签收')|(date_concat_1['订单状态'] =='已发货未签收')
                             |(date_concat_1['订单状态'] =='已完成')|(date_concat_1['订单状态'] =='已支付')|(date_concat_1['订单状态'] =='已签收')
                             |(date_concat_1['订单状态'] =='买家已付款，等待卖家发货')|(date_concat_1['订单状态'] =='等待出库')
                             |(date_concat_1['订单状态'] =='(锁定)等待确认收货')|(date_concat_1['订单状态'] =='完成')
                             |(date_concat_1['订单状态'] =='已发货，待收货')|(date_concat_1['订单状态'] =='卖家部分发货')|(date_concat_1['订单状态'] =='买家已付款,等待卖家发货')
                             |(date_concat_1['订单状态'] =='卖家已发货')|(date_concat_1['订单状态'] =='买家已付款')|(date_concat_1['订单状态'] =='发货即将超时')|(date_concat_1['订单状态'] =='交易成功')|(date_concat_1['订单状态'] =='待买家收货')|(date_concat_1['订单状态'] =='待卖家发货')]
date_concat_dl=date_concat_dl[(date_concat_dl['售后状态'] != '退款成功')&(date_concat_dl['售后状态'] !='退款完成')&(date_concat_dl['售后状态'] !='已全额退款')&(date_concat_dl['售后状态'] !='(删除)等待出库')&(date_concat_dl['售后状态'] !='(删除)等待确认收货')&(date_concat_dl['售后状态'] !='售后完成')]
date_concat_dl=date_concat_dl[date_concat_dl['订单应付金额'] >= 0.01]
#取前三
date_concat_dl=date_concat_dl[(date_concat_dl['商家编码'] !='抖音直播间赠品')&(date_concat_dl['商家编码'] !='logo定制电煮锅1个')&(date_concat_dl['商家编码'] !='红色电煮锅1个')&(date_concat_dl['商家编码'] !='赠品')]
res=date_concat_dl.groupby([date_concat_dl['日期'],date_concat_dl['渠道'],date_concat_dl['平台'],date_concat_dl['商家编码']],as_index=False).agg(商品数量=('商品数量','sum'),销售额=('订单应付金额','sum'))

res.to_excel(r'G:\结果\SKU单量明细.xlsx')
